A Common Library Interface to Shared-Memory Multiprocessors
نویسنده
چکیده
In writing a highly-portable parallel program, we developed a library of parallel primitives to shield our application code from the various multiprocessors. Rather than adapt the diierent multiprocessors to a program-speciic library via extensive implementation, we chose to rst nd a commonìntersection' of the virtual machine models provided by each vendor, de-ne a common interface to that model, and then develop our application based on that model. This paper describes the resulting common virtual machine model and a library interface to that model. We have implementations for that model on seven different shared-memory multiprocessors, and two diier-ent uniprocessors. Each implementation averages less than 100 lines of code. The common virtual machine model requires more programming eeort than any one vendor's library, but the resulting program executes reasonably eeciently on all machines. Despite recent parallel language standardization efforts (e.g. PCF 15], ANSI Parallel C 16], and HPF 8]), application programmers cannot yet expect that any given parallel programming language will be available on a wide variety of machines 14]. Indeed, K&R C 10] and Fortran 77 1] are the only languages widely available on multiprocessors. To overcome the sequential nature of these languages, vendors usually provide parallel programming primitives via user-callable libraries. Unfortunately, the vendor-provided libraries often diier substantially. In addition to providing diiering mechanisms to create and synchronize processes ; libraries often have diierent models of how the processes share and allocate memory within their address space, that is, the libraries present diierent virtual machine models. Programmers can overcome the diierences in vendor-supplied libraries by accessing parallel primi-tives through their own library and then implementing that library in terms of the vendor-supplied libraries. There are two approaches to developing a parallel library for portable applications: 1. Deene a convenient virtual machine model, write the program in terms of that model, and then implement that model on the diierent machines. 2. Find a virtual machine model that is common to all machines, write the trivial interface between the common model and each machine, and then write the program in terms of the common model. With the rst approach, it may be diicult to implement the library on a given machine because the convenient model may be incompatible with the ven-dor's model, for example when the convenient model shares global variables and the vendor's model does not. EEciency may also suuer when models are inconsistent , for example when an application with …
منابع مشابه
Integrating MPI and the Nanothreads Programming Model
This paper presents a prototype runtime system that integrates MPI, used on distributed memory systems, and Nanothreads Programming Model (NPM), a programming model for shared memory multiprocessors. This integration does not alter the independence of the two models, since the runtime system is based on a multilevel design that supports each of them individually but offers the capability to com...
متن کاملAutomatic parallelization of sequential code for a cluster of multiprocessors
In recent years parallel architectures have rapidly evolved to solve increasingly large problems, mainly because single processor based systems have reached the limit of their physical capacity. The end of 90’s has seen the growth and evolution of parallel architectures towards a cluster of multiprocessors owing to scaling problems with shared memory machines. The efficient use of such parallel...
متن کاملSvs: Can the Shared Variable Paradigm Exist in Massively Parallel Multiprocessors?
During the last years there have been many eeorts aiming towards the elimination of the gap between Shared Memory and Message Passing multi-processors. Many researchers have addressed the problem by implementing Distributed Shared Memory (DSM) systems. In this paper, we present a solution that is based on the software DSM approach but diierentiates from it, as it focuses on keeping shared varia...
متن کاملPEACE Threads Interface On Microkernel
Recently, thread libraries have become powerful entities to support parallel programming on shared memory multiprocessors and multicomputers. However, the disparity between the primitives offered by the operating systems and thread’s interface creates a challenge for those who wish to create portable threads library. The implementation of PEACE (POSIX Extensions to an Advanced Computing Environ...
متن کاملParadisEO: A Framework for the Reusable Design of Parallel and Distributed Metaheuristics
In this paper, we present the ParadisEO white-box object-oriented framework dedicated to the reusable design of parallel and distributed metaheuristics (PDM). ParadisEO provides a broad range of features including evolutionary algorithms (EA), local searches (LS), the most common parallel and distributed models and hybridization mechanisms, etc. This high content and utility encourages its use ...
متن کامل